2장 git 기본 명령어 알아보기


Attachments/Picture/Untitled 46.png

지역 저장소 → 깃허브

  1. git init 으로 지역 저장소 지정
  2. 파일 수정
  3. git add 로 수정된 파일을 스테이징 영역으로 옮김
  4. git commit 으로 지역 저장소에 저장
  5. git push 로 원격 저장소에 반영

깃허브 → 지역 저장소

  1. git clone 으로 지역 저장소 전체를 복제하거나
  2. git pull 명령어로 변경사항만 내려받을 수 있음.

git init

지역저장소로 지정하면 .git 숨김 폴더가 생성된다.
해당 폴더에 파일, 브랜치, 설정 정보등이 담겨 있음.
보통 깃에 의해서 자동으로 관리됨.

git init 취소

.git 숨김폴더 삭제하면 됨

rm -rf .git

git 설정 파일 확인

cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[user]
        name = usablechan
        email = lch8910@naver.com
[remote "origin"]
        url = git@github.com:usablechan/chapter1-basic.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main

core 섹션은 깃의 동작 제어 설정, user 섹션에는 사용자 정보 저장.

gitignore 파일 설정

.gitignore 파일에 깃으로 관리 하지 않을 폴더, 파일 명시 가능

파일 상태 확인하기

git 작업 트리

작업 디렉토리 : 실제 작업중인 파일들이 존재하는 영역
스테이징 영역 : 작업 디렉토리 파일 중 깃이 추적하는 파일들 식별하는 영역
지역 저장소 : 스테이징 영역의 파일이 커밋으로 등록되는 영역
Attachments/Picture/Untitled 47.png

깃으로 파일 상태 확인

Untracked : 작업 디렉터리에서 새로 생성한 파일
Tracked : 추적중인 상태
Attachments/Picture/tracked.png

스테이징 영역에 추가된 파일은 수정 여부에 따라서 UnmodifiedModified 상태로 분류됨.
스테이징 영역에 추가된 파일의 상태는 크게 2가지 분류

  1. Stage : 커밋으로 기록될 수 있는 상태
  2. Unstage : 파일에 변화가 있어서 바로 커밋 못함.
    Attachments/Picture/stage.png

처음 add 되면 Stage 상태이지만 modified 되면 unstage 상태가 되고, 커밋하기위해선 재등록을 해줘서 Stage 상태로 만들어줘야함.

커밋 이해하기

HEAD 포인터는 현재 작업하는 브랜치의 최종 커밋을 가리킴.
HEAD → main 은 HEAD 포인터가 main 브랜치를 가리킨다는 뜻

git log

커밋 로그 조회.

git log
>> commit 9bfbb20ce2bbe538384d483cd6f6a4f511522637 (HEAD -> main)
Author: usablechan <lch8910@naver.com>
Date:   Mon Feb 6 14:45:46 2023 +0900

    Add .gitignore file

git log -p : 파일 단위로 변경내용 보여줌 ( = git log patch)
git log -{숫자} : 최근 몇개의 커밋을 보여줄지
git log --stat : 커밋의 통계정보 보여줌
git log --pretty={option} : 커밋 로그 보여줌. 여러 형식 있다고 함.
git log --pretty=oneline --graph : 가시적으로 커밋 로그의 흐름 파악 가능이란다.

커밋 수정

커밋 메세지 수정하기

  1. git commit --amend : 마지막 커밋 에디터 화면 보여줌?
  2. git commit --amend -m "수정메시지"

커밋 파일 추가
git commit --amend --no-edit : 추가 변경 내용을 기존 커밋에 반영함.
—no-edit : 커밋 메시지 수정하지 않겠다는 뜻.

커밋 저자 수정
git commit --amend --author

커밋 푸쉬

원격 저장소에 커밋 반영하기

remote 정보 확인

cat .git/config

git push {저장소} {브랜치}

git push origin main
>>Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 370 bytes | 370.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:usablechan/chapter1-basic.git
   0140ffc..4a75444  main -> main

새로운 서버로 푸시
지역 저장소에 여러 원격 저장소 등록 가능하다고 했었음.
git remote add {저장소이름} {주소} 로 remote 추가 하면됨.

원격 저장소 복제하기

git clone "원격 저장소 주소" "새로운 저장소 이름"